/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.mzk.oai.metadataRepository.analysis.impl;

import cz.mzk.oai.metadataRepository.analysis.EnhanceResultOperation;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Martin Řehánek (rehan at mzk.cz)
 */
public class ClassifyLinksOperation implements EnhanceResultOperation {

    private List<String> webServers = new ArrayList<String>();

    {
        webServers.add("http://aleph.mzk.cz/adam");
        webServers.add("http://bcrfj.revues.org");
        webServers.add("http://bibliodyssey.blogspot.com");
        webServers.add("http://books.google.com");
        webServers.add("http://books.google.cz");
        webServers.add("http://books.google.de");
        webServers.add("http://bvbm1.bib-bvb.de");
        webServers.add("http://calcografica.ing.beniculturali.it");
        webServers.add("http://cdigital.dgb.uanl.mx");
        webServers.add("http://cgi-host.uni-marburg.de");
        webServers.add("http://daten.digitale-sammlungen.de");
        webServers.add("http://de.wikipedia.org");
        webServers.add("http://de.wikisource.org");
        webServers.add("http://digitalcollections.bsrome.it");
        webServers.add("http://digit.mzk.cz");
        webServers.add("http://diglib.hab.de");
        webServers.add("http://dispatch.opac.d-nb.de");
        webServers.add("http://en.wikipedia.org");
        webServers.add("http://gallica.bnf.fr");
        webServers.add("http://gdz.sub.uni-goettingen.de");
        webServers.add("http://ids.lib.harvard.edu");
        webServers.add("http://imageserver.mzk.cz");
        webServers.add("http://it.wikipedia.org");
        webServers.add("http://kramerius.mzk.cz");
        webServers.add("http://mdz10.bib-bvb.de");
        webServers.add("http://meta.montclair.edu");
        webServers.add("http://mmedia.kataweb.it");
        webServers.add("http://nbn-resolving.de");
        webServers.add("http://ora-web.swkk.de");
        webServers.add("http://peter-gerlach.eu");
        webServers.add("http://phaidra.univie.ac.at");
        webServers.add("http://roma.repubblica.it");
        webServers.add("http://stabikat.sbb.spk-berlin.de");
        webServers.add("http://vd17.bibliothek.uni-halle.de");
        webServers.add("http://www.all-art.org");
        webServers.add("http://www.archaiabrno.org");
        webServers.add("http://www.artnet.com");
        webServers.add("http://www.bethelks.edu");
        webServers.add("http://www.bibliothek.uni-regensburg.de");
        webServers.add("http://www.botanicus.org");
        webServers.add("http://www.britishmuseum.org");
        webServers.add("http://www.bsb-muenchen-digital.de");
        webServers.add("http://www.digibib.tu-bs.de");
        webServers.add("http://www.digitale-sammlungen.de");
        webServers.add("http://www.ensba.fr");
        webServers.add("http://www.europeana.eu");
        webServers.add("http://www.gbv.de");
        webServers.add("http://www.inghist.nl");
        webServers.add("http://www.jewishvirtuallibrary.org");
        webServers.add("http://www.luxemburgensia.bnl.lu");
        webServers.add("http://www.mdz-nbn-resolving.de");
        webServers.add("http://www.philographikon.com");
        webServers.add("http://www.physiologus.de/");
        webServers.add("http://www.slub-dresden.de");
        webServers.add("http://www.virtuelles-kupferstichkabinett.de");
        webServers.add("http://www.wenner.net");
        webServers.add("http://www.www.bibliotekacyfrowa.pl");
        webServers.add("http://www.zb.unibe.ch");
        //webServers.add("");
    }

    public String run(String string) {
        for (String prefix : webServers) {
            if (string.startsWith(prefix)) {
                return prefix;
            }
        }
        return moreClassification(string);
    }

    private String moreClassification(String string) {
        if ("".equals(string)) {
            return "EMPTY";
        }
        if (!string.startsWith("http")) {
            return "NOT_HTTP";
        } else {
            return "HTTP_OTHER";
        }
    }
}
